package com.cares.common.dao;

import cn.sh.cares.dao.DaoException;

import com.cares.event.entity.TEventLog;

public interface JsflowDao {
	
	/**
     * 调用无返回值的存储过程
     * jsflowParams: 工作流信息，依次为：流程实例ID，流程实例名称，任务节点id，任务节点名称
     * proName：存储过程名称，params：存储过程IN参数；可为空
     **/
    void callProcedure(String[] jsflowParams, String proName, Object... inParams) throws DaoException;
    
    /**
     * 调用有返回值的存储过程
     * jsflowParams: 工作流信息，依次为：流程实例ID，流程实例名称，任务节点id，任务节点名称
     * proName：存储过程名称，params：存储过程IN参数；可为空
     * outParams为存储过程的返回参数名称
     * 返回对象由具体调用的存储过程决定，如果存储过程返回值只有一个，则返回一个object对象，如果有多个则返回object对象数组
     **/
    <T> T callProceReturnValue(String[] jsflowParams, String proName, Object[] inParams, String... outParams) throws DaoException;
    
    /***
     * 存储日志信息 
     */
    void saveProcedureLog(TEventLog flowLog);
    
}
